// 0: 页面事件  ||  1：功能事件
export enum LogEventType {
    PAGE = 0,
    FUNCTION = 1,
}

export interface LogCollectOption {
    logServer: string;
    resourceCode: string | number;  // 资源code
    interval?: number;              // 上传间隔
    production?: boolean;           // 是否上传
}

export const createDefaultOption = (opt): LogCollectOption => {
    opt['interval'] = ~~opt['interval'] === 0 ? 30 : ~~opt['interval'] // 默认值
    const defaultOption: LogCollectOption = {
        logServer: 'https://auth-test.jxwrd.gov.cn/',
        interval: 30,
        production: false,
        resourceCode: undefined,
    }
    return Object.assign(defaultOption, opt)
}

export enum ModeType {
    PC = 1,
    APP = 2,
}

// 避免长 number
export interface UserData {
    resourceName: string;
    createBy: string;               // 用户id
    deptId: string;                 // 主部门id
    deptName: string;               // 主部门名称
    userName: string;               // 用户姓名
    photoLarge: string;             // 头像
}

export interface LogEvent {
    event: LogEventType,             // 事件类型
    eventName?: string,              // 事件组件名称
    eventObject?: string             // 事件对象
}

export interface StorageData extends UserData, LogEvent {
    resourceCode: string | number,
    createDate: number,
    ip: string,
    resolvingPower: string,
    route: string,
    titleName: string,
    equipment: string,
    browserType: string,
    operatingSystem: string,
    mode: ModeType,
    UA: string,
    osVersion: string,                   // 操作系统版本
    uId: string,                         // 主键（唯一标识）（本地）
    version: string,                     // 版本（本地）
    is_upload: number | boolean,         // 是否上传（本地）
}